package priv.bestbeat.reportcenter.core.persistence;

/**
 * @author 张渠钦
 * @date 2022/4/24 11:30
 * @param <T> 可以持久化对象
 */
public interface Persistable<T> {

    /**
     * 存储
     * @param obj 载体
     * @return T 载体
     */
    T persist(T obj);

    /**
     * 移除指定载体
     * @param obj 载体
     * @return
     */
    T remove(T obj);

    /**
     * 更新载体
     * @param newer 更新的载体
     * @return T 旧的载体
     */
    T update(T newer);

    /**
     * 获取完整任务
     * @param obj
     * @return
     */
    T getById(T obj);
}
